package core

import (
	"gitee.com/binny_w/go-util"
	"go.uber.org/zap"
)

var (
	RedisCache     *util.Redis
	RedisVersion   string
	RedisRateLimit *util.Redis
	RedisVerify    *util.Redis
)

func redisInit() {
	var err error

	dsn := Config.GetString("redis.rate-limit")
	RedisRateLimit, err = util.NewRedis(dsn)
	if err != nil {
		Logger.Panic("redis rate limit connection fail", zap.Error(err), zap.String("dsn", dsn))
	}

	dsn = Config.GetString("redis.cache")
	RedisCache, err = util.NewRedis(dsn)
	if err != nil {
		Logger.Panic("redis cache connection fail", zap.Error(err), zap.String("dsn", dsn))
	}
	RedisVersion, _ = RedisCache.Version()
	RedisCache.SetLogger(func(err error, cmd string, args ...any) {
		if err != nil {
			Logger.Error("redis err", zap.Error(err), zap.String("cmd", cmd), zap.Any("args", args))
		}
		Logger.Debug("redis do", zap.Error(err), zap.String("cmd", cmd), zap.Any("args", args))
	})

	dsn = Config.GetString("redis.verify")
	RedisVerify, err = util.NewRedis(dsn)
	if err != nil {
		Logger.Panic("redis verify connection fail", zap.Error(err), zap.String("dsn", dsn))
	}
}
